//
//  Post.swift
//  WeiboDemo
//
//  Created by 姬向阳 on 2020/4/18.
//  Copyright © 2020 SUNNYJ. All rights reserved.
//

import SwiftUI

// MARK:- Data Model

// 对应JSON中的list
struct PostList : Codable {
    var list : [Post]
}

// 对应JSON中的每一个post
struct Post : Codable,Identifiable {
    // Property 属性
    let id : Int
    let avatar : String // 头像,图片名称
    let vip : Bool // 是否VIP
    let name : String // 用户昵称
    let date : String // 日期
    var isFollowed : Bool // 是否关注
    let text : String // 文本内容
    let images : [String] // 图片内容
    var commentCount : Int // 评论数
    var likeCount : Int // 点赞数
    var isLiked : Bool // 是否点赞
}

// View相关
extension Post {
    var avatarImage : Image {
        return loadImage(name: avatar)
    }
    
    var commentCountText : String {
        if commentCount <= 0 { return "评论" }
        if commentCount < 1000 { return "\(commentCount)" }
        return String(format: "%.1fK" , Double(commentCount)/1000 )
    }
    
    var likeCountText : String {
        if likeCount <= 0 { return "点赞" }
        if likeCount < 1000 { return "\(likeCount)" }
        return String(format: "%.1fK" , Double(likeCount)/1000 )
    }
}

// 解析微博数据文件
func loadPostListData(_ fileName: String) -> PostList {
    guard let url = Bundle.main.url(forResource: fileName, withExtension: nil) else {
        fatalError("Failed to find \(fileName).")
    }
    guard let data = try? Data(contentsOf: url) else {
        fatalError("Failed to load \(url).")
    }
    guard let list = try? JSONDecoder().decode(PostList.self, from: data) else {
        fatalError("Failed to parse post list json data.")
    }
    return list
}

// 从图片名称直接生成Image
func loadImage(name: String) -> Image {
    return Image(uiImage: UIImage(named: name)!)
}

